package com.atguigu.interview.base.singleton;

/**
 * @author Jungle
 * @create 2022-09-06 10:43
 * @formatter:off
 * ·懒汉式∶延迟创建对象
     * 线程不安全(适用于单线程)·
     * 线程安全(适用于多线程)
     * 静态内部类形式(适用于多线程)
 *
 * (1) 构造器私有化，
 * （2） 用一个静态变量保存唯一实例，这个属性需要私有（和恶汉式不同）
 *  （3）提供一个静态方法获取整个对象
 *
 * @formatter:on
 */
public class Lazy2 {
    private volatile static Lazy2 instance;

    private Lazy2() {
    }

    /**
     * 1、适合多线程，DCL 双端检测锁
     * 加锁块和 volatile关键字
     */
    public static Lazy2 getInstance() {
        if (instance == null) {
            synchronized (Lazy1.class) {
                if (instance == null) {

                    instance = new Lazy2();
                }

            }
        }
        return instance;
    }
}
